﻿namespace HART.Messages
{
    /// <summary>
    /// 包含可能的通信错误描述。
    /// </summary>
    internal static class CommunicationErrorList
    {
        private const string NoError = "没有错误。";

        private const string VerticalParityError = "垂直奇偶校验错误 – 从设备接收的一个或多个字节的奇偶校验检查不正确。";

        private const string OverflowError = "溢出错误 – 在读取之前，通用异步接收器/发送器缓冲区中的至少一个数据字节被覆盖。";

        private const string FrameError = "帧错误 – 设备接收的一个或多个字节的停止位与消息末尾的纵向奇偶校验字节不匹配。";

        private const string HorizontalParityError = "水平奇偶校验错误 – 设备执行的纵向奇偶校验与消息末尾的纵向奇偶校验字节不匹配。";

        private const string ReceiverBufferOverflow = "接收缓冲区溢出 – 消息对于设备的缓冲区来说太长。";

        private const string Undefined = "未定义 – 意外错误。";

        /// <summary>
        /// 获取通信错误描述。
        /// </summary>
        /// <param name="errorCode">接收到的响应代码的第一个字节。</param>
        /// <returns>通信错误描述。</returns>
        internal static string GetErrorDescription(byte errorCode)
        {
            switch (errorCode)
            {
                case 0b0: return NoError;
                case 0b11000000: return VerticalParityError;
                case 0b10100000: return OverflowError;
                case 0b10010000: return FrameError;
                case 0b10001000: return HorizontalParityError;
                case 0b10000010: return ReceiverBufferOverflow;
                case 0b10000001: return Undefined;
            }

            return Undefined;
        }
    }
}